#include "Function.h"
#include "LED.h"
#include "RF.h"
#include "UserApp.h"
#include "OS_Event.h"
#include "Config.h"

//=========================================================================
//  °´¼ü¹¦ÄÜ
//=========================================================================

Typedef_Para FuncPara;

uint8 OpPara[5];      //---- 1-水温 2-风温 3-座温 4-水压 5-位置 ----//

void DoOperate(void)
{
    if(FuncPara.OpSel)
    {
        if(FuncPara.OpType == 1)
        {
            //---- 加 ----//
            OpPara[FuncPara.OpSel - 1]++;
            if(OpPara[FuncPara.OpSel - 1] >= FuncPara.OpMax)
            {
                if(FuncPara.OpDir == 0)
                {
                    //---- 循环 ----//
                    OpPara[FuncPara.OpSel - 1] = 0;
                }
            }
        }
        else if(FuncPara.OpType == 2)
        {
            //---- 减 ----//
            if(OpPara[FuncPara.OpSel - 1] > FuncPara.OpMin)
                OpPara[FuncPara.OpSel - 1]--;
            else
            {
                if(FuncPara.OpDir == 0)
                {
                    //---- 循环 ----//
                    OpPara[FuncPara.OpSel - 1] = FuncPara.OpMax-1; 
                }
            }            
        }

        RemoteCtrl.ShuiWen = OpPara[0];
        RemoteCtrl.FengWen = OpPara[1];
        RemoteCtrl.ZuoWen = OpPara[2];
    }
}

void DoKey(uint8 base, uint8 key)
{
    FuncPara.Cmd = TblFuncPara[base + key].Cmd;
    if(FuncPara.Cmd)
    {
        FuncPara.DispSel = TblFuncPara[base + key].DispSel;
        FuncPara.OpSel = TblFuncPara[base + key].OpSel;
        FuncPara.OpType = TblFuncPara[base + key].OpType;
        FuncPara.OpMin = TblFuncPara[base + key].OpMin;
        FuncPara.OpMax = TblFuncPara[base + key].OpMax;
        FuncPara.OpDir = TblFuncPara[base + key].OpDir;

        //---- 运算 ----//
        if(f_WakeUp)
            f_WakeUp = NO;
        else
            DoOperate();

        //---- 发送无线数据 ----//
        RF_Send(FuncPara.Cmd);

        //---- 指示灯 ----//
        if(FuncPara.DispSel)
        {
            uint8 idx = OpPara[FuncPara.DispSel-1]+1;

            SetLed(TAB_LED[idx],TM_LED_DISP);

        }
        else
            SetLed(BLINK_SEND,TM_LED_SHORT);
    }
}
